//
//  YXHomeViewController.swift
//  yanXiangWeiBo
//
//  Created by 颜祥 on 15/12/15.
//  Copyright © 2015年 yanxiang. All rights reserved.
//

import UIKit

class YXHomeViewController: YXBaseViewController
{

    // MARK: - 定义一个可变数组，保存微博模型对象
    var statuses: [YXStatus]?
    
    // 设置cell重用标示
    let ReuseIdentifier = "ReuseIdentifier"
    

    override func viewDidLoad()
    {
        super.viewDidLoad()
        
        // 如果用户没有登录，不用做下一步操作，直接返回
        if !YXUserAccount.isUserLogin
        {
            print("登录,即可分享更多")
            return
        }
        
        
        // 添加导航条两边的按钮
         setNavigationBar()
        
        YXNetWorkTool.sharedInstance.loadStatus { (result, error) -> () in
            print("微博数据result: \(result)")
        }
        
        
        // 注册cell
        tableView.registerClass(YXStatusCell.self, forCellReuseIdentifier: ReuseIdentifier)
        
        // 设置行高
        //tableView.rowHeight = 200
        // 设置预估行高
        tableView.estimatedRowHeight = 200
        
        // 高度自适应
        //tableView.rowHeight = UITableViewAutomaticDimension
        
        // 去掉分割线
        tableView.separatorStyle = UITableViewCellSeparatorStyle.None
        
        // 加载微博数据
        YXStatus.modelLoadStatus { (statuses, error) -> () in
            
            if error != nil && statuses == nil
            {
                print("加载微博数据出错")
                return
            }
            
            // 进入到这里说明加载成功
            self.statuses = statuses
            
            // 刷新
            self.tableView.reloadData()
            
            
        }
        
    }
    
    //MARK: - 添加导航条按钮
    private func setNavigationBar()
    {
        // 左边按钮
        navigationItem.leftBarButtonItem = UIBarButtonItem(imageName: "navigationbar_friendsearch")
        
        // 右边按钮
        navigationItem.rightBarButtonItem = UIBarButtonItem(imageName: "navigationbar_pop")
        
        // 中间按钮
        // 获取用户的昵称
        let title = YXUserAccount.loadUserAccount()?.screen_name ?? "没有获取到用户名"
        let titleView = YXHomeTitleView(imageName: "navigationbar_arrow_down", title: title)
        
        // 添加点击事件
        titleView.addTarget(self, action: "titleViewDidClick:", forControlEvents: UIControlEvents.TouchUpInside)
        
        
        navigationItem.titleView = titleView
        
    }
    
    // 导航条中间按钮点击事件
    func titleViewDidClick(btn: YXHomeTitleView) -> ()
    {
        btn.selected = !btn.selected
        
        // 图片旋转
        UIView.animateWithDuration(0.5) { () -> Void in
            
            btn.imageView?.transform = btn.selected ? CGAffineTransformMakeRotation(CGFloat(M_PI) - 0.0001) : CGAffineTransformIdentity
            
        }
        
    }
    
    // MARK: - Table view data source
    override func tableView(tableView: UITableView, numberOfRowsInSection section: Int) -> Int
    {
        //print("count:\(self.statuses?.count)")
        
        return self.statuses?.count ?? 0
    }

    
    override func tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) -> UITableViewCell
    {
        let cell = tableView.dequeueReusableCellWithIdentifier(ReuseIdentifier, forIndexPath: indexPath) as! YXStatusCell

        // 取出模型
        let status = self.statuses![indexPath.row] as YXStatus
        
        // 给cell赋值模型对象
        cell.status = status
        

        return cell
    }
    
    // 返回每个cell的高度
    override func tableView(tableView: UITableView, heightForRowAtIndexPath indexPath: NSIndexPath) -> CGFloat {
        
        // 1.获得模型
        let status = statuses![indexPath.row]
        
        // 2.看看模型是否有缓存的行高，如果有就直接返回
        if status.rowHeight != nil
        {
            return status.rowHeight!
        }
        
        // 没有缓存行高
        let cell = tableView.dequeueReusableCellWithIdentifier(ReuseIdentifier) as! YXStatusCell
        
        // 获得自己计算好的行高
        let rowHeight = cell.rowHeight(status)
        
        // 保存行高
        status.rowHeight = rowHeight
        
        return rowHeight
        
    }



}
